home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / cgazv5n5.arc / XMSHMA.C < prev    next >
C/C++ Source or Header  |  1991-09-23  |  1KB  |  49 lines

  1. /*--- XMSHMA.C --------------------------- Listing 4 ------
  2.  * XMS HMA Functions. main() prints a greeting from HMA.
  3.  * by David Babcock
  4.  *
  5.  * Must be linked with XMSGEN (Listing 1)
  6.  *
  7.  * Validated for Microsoft and Borland C/C++
  8.  *
  9.  * (c) 1991 C Gazette. Object Code may be used freely,
  10.  * source code may be used if authorship and publication
  11.  * are acknowledged.
  12.  *-------------------------------------------------------*/
  13.  
  14. #include <stdio.h>
  15. #include "xms.h"
  16.  
  17. static char hello[] = "Hello from the HMA" ;
  18. static char hello_again [ 30 ] ;
  19.  
  20. void main ( void )
  21. {
  22.     unsigned int ver ;
  23.     char far *HMAPtr, far *fp ;
  24.     char     *np1, *np2 ;
  25.     int      gotHMA ;
  26.  
  27.     ver = ( unsigned int ) GetXMSVersionNumber();
  28.     printf ( "XMS version %s\n", PrintXMSVersionNumber ( ver ));
  29.  
  30.     if ( ver >= 0x200 ) {
  31.         gotHMA = ( RequestHighMemoryArea ( 0xFFFF ) == 0 ) ;
  32.         if ( gotHMA ) {
  33.             HMAPtr = MK_FP ( 0xFFFF, 0x0010 ) ;
  34.             np1 = hello ;
  35.             np2 = hello_again ;
  36.             fp = HMAPtr ;
  37.             while (( *fp++ = *np1++ ) != 0 )
  38.                         ;
  39.  
  40.             fp = HMAPtr ;
  41.             while (( *np2++ = *fp++ ) != 0 )
  42.                         ;
  43.             printf ( "%s", hello_again ) ;
  44.             ReleaseHighMemoryArea();
  45.         }
  46.         else
  47.             printf ( "Couldn't access the HMA.\n" );
  48.     }
  49. }